Creare eliminare copiare cartelle e files
Per creare una cartella su un disco, si usa l'istruzione MkDir. Esempio:
MkDir "c:\miaDir"
Per eliminarla si usa l'istruzione RmDir. Esempio:
RmDir "c:\miaDir"
RmDir genera errore se si tenta di eliminare cartelle non vuote.
Per eliminare uno (o più files) si usa l'istruzione Kill. Esempio:
Kill "c:\miaDir\file.txt" oppure Kill "c:\miaDir\*.*
Si possono infatti usare, in questo caso, i caratteri jolly standard * e ?.
Per spostare e/o rinominare un file o cartella, basta utilizzare l'istruzione Name:
Name vecchioPercorso As nuovoPercorso
E' necessario che i due percorsi si trovino sullo stesso disco. E' inoltre necessario che il nuovo percorso esista (cioè la cartella di destinazione; altrimenti verrà generato l'errore 53 FileNonTrovato) e che non esista un file dello stesso nome in quella cartella (altrimenti verrà dato a RunTime l'errore 58 di file già esistente). Esempio:Name "C:\prova.txt" As "C:\ok.txt"
Per copiare un file si usa l'istruzione FileCopy:FileCopy "c:\prova.txt", "c:\es.txt"
In questo esempio il file prova.txt viene duplicato nel file es.txt. ATTENZIONE: FileCopy sovrascrive i file già esistenti senza preavviso!
Per vedere se un file è già esistente si può costruire questa funzione che restituisce True o False:
Private Function esisteFile(percorso As String) As Boolean
Dim num As Integer
On Error GoTo err
num = FreeFile
Open percorso For Input As num
Close num
esisteFile = True
Exit Function
err:
Close num
esisteFile = False
End Function
Notare anche l'uso della funzione FreeFile che restituisce un numero di file che non sia già utilizzato correntemente.
Il "trucco" sta nell'apertura del file per Input. Questa da un errore se il file non esiste.
Scrivere e leggere su files
Per scrivere un file esistono diversi metodi.
L'istruzione Write scrive su un file separando con una virgola i dati. Stampa le stringhe fra apici ("stringa") e i numeri normalmente, valori booleani in questo modo #True# ecc...
L'istruzione Input legge un file scritto in maniera formattata (scritto con Write per esempio).
Prima di scrivere e leggere, bisogna aprire un file, dopo bisogna chiuderlo.
Per aprire un file si usa la seguente istruzione Open:
Open nomepercorso For modalità [Access accesso] [blocco] As [#]numerofile [Len=lunghezzarec]
nomepercorso indica il percorso del file (es: "c:\miofile.txt");
modalità: indica se si vuole aprire in lettura (Input) scrittura (Output) ecc...;
accesso: vedi Guida
blocco: vedi Guida
numerofile: indica il numero univoco che si vuole attribuire al file;
lunghezzarec: intero che indica la lunghezza da leggere
es: Open "c:\miofile.txt" For Input As #1, Open "c:\miofile2.txt" For Output As #2
Alla fine per chiudere si deve usare l'istruzione Close. Se non vengono inseriti argomenti, Close chiude tutti i files aperti in quel momento. Esempi:
Close #1 Close
Write e Input hanno come primo argomento il numero del file. Write è seguito dalle stringhe o dalle varibili che contengono i dati da scrivere. Input è seguito da tante variabili quante sono quelle da leggere. In entrambi i casi gli argomenti devono essere divisi da virgole. Esempi:
Write #2, "Ciao", "Giorgio", MiaVar, Label1.Caption, MiaBoolVar
Input #1, PrimaVar, Secondavar, TerzaVar
Esiste anche un'altra importante istruzione di scrittura, questa volta in maniera non formattata: Print.
Anche Print (come Write) ha come primo argomento il numero del file, e come successivo le stringhe da scrivere. Le stringhe vanno divise da spazi o da punti e virgola. Se al termine dell'istruzione Print non c'è un punto e virgola, la successiva istruzione andrà a capo. Esempi:Print #1, "ciao"; "mamma"; "oggi ho preso un"; 5 "a scuola"
Print #1, "Non mi sgridare!!"
In questo caso "Non mi sgridare" verrà visualizzato a capo.
Sempre parlando di testo non formattato, può essere utile leggere un file riga per riga. L'istruzione Line Input attribuisce ad una variabile la stringa di caratteri presenti in una intera riga di un file. Anche Line Input ha come primo argomento il numero del file di lettura e come secondo la variabile:Line Input #1, MiaVariabile
Line Input legge fino a quando non trova un carattere di ritorno a capo.
E' utile introdurre una costante presente in molti linguaggi: EOF. Eof sta per EndOfFile e indica appunto quando il file finisce.
Per leggere un intero file potete usare questa formula:
Open FileName for Input As #1
Do Until EOF(1) ' 1 specifica di quale file si tratta l'EOF
Line Input #1, Variabile
Text1.Text=Text1.Text & Variabile & chr(13) & chr(10)
Loop
Close #1

